vcf.o overlay.o google.o xhtmlent.o lowranceusr.o an1.o tomtom.o \
tef_xml.o maggeo.o vitosmt.o bcr.o \
ignrando.o stmwpp.o cst.o nmn4.o compegps.o \
- yahoo.o unicsv.o wfff_xml.o garmin_txt.o axim_gpb.o gpssim.o \
+ yahoo.o unicsv.o wfff_xml.o garmin_txt.o gpssim.o \
stmsdf.o dmtlog.o raymarine.o alan.o vitovtt.o \
ggv_log.o g7towin.o garmin_gpi.o lmx.o random.o xol.o dg-100.o \
navilink.o mtk_logger.o ik3d.o osm.o destinator.o exif.o vidaone.o \
arcdist.o: arcdist.cc defs.h config.h queue.h zlib/zlib.h zlib/zconf.h \
gbfile.h cet.h cet_util.h inifile.h session.h src/core/datetime.h \
filterdefs.h grtcirc.h
-axim_gpb.o: axim_gpb.cc defs.h config.h queue.h zlib/zlib.h zlib/zconf.h \
- gbfile.h cet.h cet_util.h inifile.h session.h src/core/datetime.h
bcr.o: bcr.cc defs.h config.h queue.h zlib/zlib.h zlib/zconf.h gbfile.h \
cet.h cet_util.h inifile.h session.h src/core/datetime.h csv_util.h \
garmin_tables.h
+++ /dev/null
-MS Pocketstreets 2002/2003 Pushpins (.PSP) Q & A
-------------------------------------------------
-
-Q: Why should I use gpsbabel/psp to make pushpins when Streets & Trips (S&T)
- already does that for me?
-
-A: gpsbabel/psp has the advantage of being able to create pushpins WITHOUT
- creating the associated map file and the need to "import" the waypoint
- data into S&T. Through a series of scripts, you can create a dozen
- or so PSP files in a few seconds as opposed to a few weeks using the
- S&T interface. The maps are not going to change between sessions,
- only the pins will. Why waste all that time creating maps when all you
- really want are updated pins? As an aside, gpsbabel/psp creates points
- WITH THE PROPER coordinates where S&T does not in some areas of the U.S.
- (Nashville, TN for instance).
-
-
-Q: I keep getting a blank (32 byte) PSP file?
-
-A: There are either no points to write, or you have botched the command
- line for gpsbabel. gpsbabel is sensitive to UPPER and lower case
- on the command line. A simple command line to create PSP files
- looks like this:
-
- gpsbabel -i geo -f geocaching.loc -o psp -F NewOrleans.psp
-
- Note the use of "-f" for INPUT files and "-F" for OUTPUT files.
-
-
-Q: I've created a PSP file, now what do I do with it?
-
-A: To use pushpins in Pocketstreets, you need to have both a map and a
- pushpin file. These two files must exist in the same folder and have
- exactly the same base name as the map. For example, the pins that
- correspond to the map "NewOrleans.mps" should be named "NewOrleans.psp".
-
-
-Q: I don't have a map? What do I do now?
-
-A: Create one using the "Export map to Pocketstreets" option in S&T. You
- can also pick up some major city maps on the web from the MS Pocketstreets
- website if you are interested in seeing how it works.
-
-
-Q: I have .EST files, not .PSP files. What's up with that?
-
-A: In order to make PSP files, you need to use the "Export map to
- Pocketstreets" function in S&T. .EST files are for use in S&T, not
- Pocketstreets.
-
-
-Q: The .PSP files differ when I use gpsbabel/psp versus Pocketstreets to
- create them. What's up?
-
-A: Pocketstreets makes corrections to the S&T waypoint data upon initial
- loading. gpsbabel/psp writes PSP files with these corrections already made.
- Ask MS.
-
-
-Q: Does gpsbabel/psp work with (Autoroute, Mappoint, etc..) .PSP files?
-
-A: As of this writing, I haven't seen any so I can't be sure. If they
- follow the same layout as S&T 2002, I'd imagine so.
-
-
-Q: Does gpsbabel/psp work with (S&T 2001, S&T 2002, etc...) files?
-
-A: MS the file layout between S&T 2001 and S&T 2002. The gpsbabel psp
- module is known to work fine with S&T 2002 and 2003.
-
-
-Q: Does gpsbabel/psp work with (insert your country/location here) maps?
-
-A: If it doesn't, feel free to email the PSP files to me at:
- geo_alexm at cox-internet.com. I only had USA based data to work
- with while figuring out the file layout. Please include as much
- information about the points as possible (lat/long, name, etc..)
- and do it in English. I don't read or speak any other languages
- fluently.
-
-
-Q: What do you mean S&T writes points with the wrong coordinates?
-
-A: At some point in the "Export map to Pocketstreets" function in S&T,
- it goofs the lat/long data. Points in Nashville tended to shift
- 1.4 miles WEST of their original location. I'm not a geometry buff,
- but I'd imagine they have a reference point for generating coordinates
- that's wrong in (at least) that area.
-
-
-Q: I have 800 waypoints that cover a dozen or so Pocketstreets maps.
- Do I need to to split my points up into smaller chunks to match the
- area covered by the maps?
-
-A: No. Pocketstreets will "ignore" points that are outside of the map
- area. Points that are not on the current map will be "grayed out"
- in pushpin explorer in Pocketsreets. This is the reason the PSP
- module was written for gpsbabel in the first place.
-
-
-Q: Where can I find documentation for the layout of PSP files?
-
-A: Just about everything I know about the PSP file format is documented
- in the source. To the best of my knowledge, there is no documentation
- (and for good reason, I've come to discover).
-
-
-Q: I have some other problem, what do I do?
-
-A: Email me at geo_alexm at cox-internet.com and I'll see if I can
- work it out.
-
+++ /dev/null
-/*
-
- Track reader for "Dell Axim Navigation System" GPB files,
-
- Copyright (C) 2006 Olaf Klein, o.b.klein@gpsbabel.org
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
-
- */
-
-#include <ctype.h>
-#include <math.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "defs.h"
-
-#define MYNAME "axim_gpb"
-
-#define RECORD_LEN 344
-
-static gbfile* fin;
-
-static
-arglist_t axim_gpb_args[] = {
- ARG_TERMINATOR
-};
-
-static float
-le_read32_float(const void* src)
-{
- float f;
- int32_t i;
-
- i = le_read32(src);
- memcpy(&f, &i, 4);
-
- return f;
-}
-
-static void
-decode_buff(const char* buff, route_head* track)
-{
- struct tm tm;
- double lat, lon, alt, dir;
- float vdop, hdop, pdop, spd, Uf1;
- int sats;
- waypoint* wpt;
-
- wpt = waypt_new();
-
- memset(&tm, '\0', sizeof(tm));
-
- tm.tm_year = le_read16((void*)(buff + 16));
- tm.tm_mon = le_read16((void*)(buff + 18));
- tm.tm_mday = le_read16((void*)(buff + 22));
- tm.tm_hour = le_read16((void*)(buff + 24));
- tm.tm_min = le_read16((void*)(buff + 26));
- tm.tm_sec = le_read16((void*)(buff + 28));
- lat = le_read_double((void*)(buff + 32));
- lon = le_read_double((void*)(buff + 40));
- spd = le_read32_float((void*)(buff + 48));
- dir = le_read32_float((void*)(buff + 52));
-
- alt = le_read32_float((void*)(buff + 64));
- Uf1 = le_read32_float((void*)(buff + 68));
-
- hdop = le_read32_float((void*)(buff + 84));
- vdop = le_read32_float((void*)(buff + 88));
- pdop = le_read32_float((void*)(buff + 92));
- sats = le_read16((void*)(buff + 96));
-
- wpt->latitude = lat;
- wpt->longitude = lon;
- wpt->altitude = alt;
-#if 0
- /* These values can be, but must not be right. */
- /* Further checks are needed to verify that. */
- /* (!!! reference data !!!) */
- WAYPT_SET(wpt, course, dir);
- wpt->hdop = hdop;
- wpt->vdop = vdop;
- wpt->pdop = pdop;
- wpt->sat = sats;
- WAYPT_SET(wpt, speed, spd * 10);
-#endif
- /* We don't have a header with some magic fixed numbers or strings. */
- /* So let us check the range for some basic values */
-
- is_fatal(
- (tm.tm_year < 2005) ||
- (tm.tm_mon < 1) || (tm.tm_mon > 12) ||
- (tm.tm_mday < 1) || (tm.tm_mday > 31) ||
- (tm.tm_hour > 23) || (tm.tm_min > 60) || (tm.tm_sec > 60),
- MYNAME ": Invalid or unsupported file (invalid time-stamp).");
- is_fatal(
- (fabs(wpt->latitude) > 90) ||
- (fabs(wpt->longitude) > 180),
- MYNAME ": Invalid or unsupported file (lat or/and lon out of range).");
-
- /* post work */
-
- tm.tm_year-=1900;
- tm.tm_mon--;
- wpt->SetCreationTime(mkgmtime(&tm));
-
- track_add_wpt(track, wpt);
-}
-
-/*******************************************************************************
-* %%% global callbacks called by gpsbabel main process %%% *
-*******************************************************************************/
-
-static void
-axim_gpb_rd_init(const char* fname)
-{
- fin = gbfopen(fname, "rb", MYNAME);
-}
-
-static void
-axim_gpb_rd_deinit(void)
-{
- gbfclose(fin);
-}
-
-static void
-axim_gpb_read(void)
-{
- char buff[RECORD_LEN];
- route_head* track = NULL;
- size_t bytes;
-
- while ((bytes = gbfread(buff, 1, RECORD_LEN, fin))) {
- is_fatal((bytes != RECORD_LEN), MYNAME ": Invalid or unsupported file (filesize).");
- if (track == NULL) {
- track = route_head_alloc();
- track_add_head(track);
- }
- decode_buff(buff, track);
- }
-}
-
-/**************************************************************************/
-
-ff_vecs_t axim_gpb_vecs = {
- ff_type_file,
- {
- ff_cap_none /* waypoints */,
- ff_cap_read /* tracks */,
- ff_cap_none /* routes */,
- },
- axim_gpb_rd_init,
- NULL,
- axim_gpb_rd_deinit,
- NULL,
- axim_gpb_read,
- NULL,
- NULL,
- axim_gpb_args,
- CET_CHARSET_ASCII, 0
-};
-/**************************************************************************/
--- /dev/null
+MS Pocketstreets 2002/2003 Pushpins (.PSP) Q & A
+------------------------------------------------
+
+Q: Why should I use gpsbabel/psp to make pushpins when Streets & Trips (S&T)
+ already does that for me?
+
+A: gpsbabel/psp has the advantage of being able to create pushpins WITHOUT
+ creating the associated map file and the need to "import" the waypoint
+ data into S&T. Through a series of scripts, you can create a dozen
+ or so PSP files in a few seconds as opposed to a few weeks using the
+ S&T interface. The maps are not going to change between sessions,
+ only the pins will. Why waste all that time creating maps when all you
+ really want are updated pins? As an aside, gpsbabel/psp creates points
+ WITH THE PROPER coordinates where S&T does not in some areas of the U.S.
+ (Nashville, TN for instance).
+
+
+Q: I keep getting a blank (32 byte) PSP file?
+
+A: There are either no points to write, or you have botched the command
+ line for gpsbabel. gpsbabel is sensitive to UPPER and lower case
+ on the command line. A simple command line to create PSP files
+ looks like this:
+
+ gpsbabel -i geo -f geocaching.loc -o psp -F NewOrleans.psp
+
+ Note the use of "-f" for INPUT files and "-F" for OUTPUT files.
+
+
+Q: I've created a PSP file, now what do I do with it?
+
+A: To use pushpins in Pocketstreets, you need to have both a map and a
+ pushpin file. These two files must exist in the same folder and have
+ exactly the same base name as the map. For example, the pins that
+ correspond to the map "NewOrleans.mps" should be named "NewOrleans.psp".
+
+
+Q: I don't have a map? What do I do now?
+
+A: Create one using the "Export map to Pocketstreets" option in S&T. You
+ can also pick up some major city maps on the web from the MS Pocketstreets
+ website if you are interested in seeing how it works.
+
+
+Q: I have .EST files, not .PSP files. What's up with that?
+
+A: In order to make PSP files, you need to use the "Export map to
+ Pocketstreets" function in S&T. .EST files are for use in S&T, not
+ Pocketstreets.
+
+
+Q: The .PSP files differ when I use gpsbabel/psp versus Pocketstreets to
+ create them. What's up?
+
+A: Pocketstreets makes corrections to the S&T waypoint data upon initial
+ loading. gpsbabel/psp writes PSP files with these corrections already made.
+ Ask MS.
+
+
+Q: Does gpsbabel/psp work with (Autoroute, Mappoint, etc..) .PSP files?
+
+A: As of this writing, I haven't seen any so I can't be sure. If they
+ follow the same layout as S&T 2002, I'd imagine so.
+
+
+Q: Does gpsbabel/psp work with (S&T 2001, S&T 2002, etc...) files?
+
+A: MS the file layout between S&T 2001 and S&T 2002. The gpsbabel psp
+ module is known to work fine with S&T 2002 and 2003.
+
+
+Q: Does gpsbabel/psp work with (insert your country/location here) maps?
+
+A: If it doesn't, feel free to email the PSP files to me at:
+ geo_alexm at cox-internet.com. I only had USA based data to work
+ with while figuring out the file layout. Please include as much
+ information about the points as possible (lat/long, name, etc..)
+ and do it in English. I don't read or speak any other languages
+ fluently.
+
+
+Q: What do you mean S&T writes points with the wrong coordinates?
+
+A: At some point in the "Export map to Pocketstreets" function in S&T,
+ it goofs the lat/long data. Points in Nashville tended to shift
+ 1.4 miles WEST of their original location. I'm not a geometry buff,
+ but I'd imagine they have a reference point for generating coordinates
+ that's wrong in (at least) that area.
+
+
+Q: I have 800 waypoints that cover a dozen or so Pocketstreets maps.
+ Do I need to to split my points up into smaller chunks to match the
+ area covered by the maps?
+
+A: No. Pocketstreets will "ignore" points that are outside of the map
+ area. Points that are not on the current map will be "grayed out"
+ in pushpin explorer in Pocketsreets. This is the reason the PSP
+ module was written for gpsbabel in the first place.
+
+
+Q: Where can I find documentation for the layout of PSP files?
+
+A: Just about everything I know about the PSP file format is documented
+ in the source. To the best of my knowledge, there is no documentation
+ (and for good reason, I've come to discover).
+
+
+Q: I have some other problem, what do I do?
+
+A: Email me at geo_alexm at cox-internet.com and I'll see if I can
+ work it out.
+
--- /dev/null
+/*
+
+ Track reader for "Dell Axim Navigation System" GPB files,
+
+ Copyright (C) 2006 Olaf Klein, o.b.klein@gpsbabel.org
+
+ This program is free software; you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as published by
+ the Free Software Foundation; either version 2 of the License, or
+ (at your option) any later version.
+
+ This program is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ GNU General Public License for more details.
+
+ You should have received a copy of the GNU General Public License
+ along with this program; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111 USA
+
+ */
+
+#include <ctype.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "defs.h"
+
+#define MYNAME "axim_gpb"
+
+#define RECORD_LEN 344
+
+static gbfile* fin;
+
+static
+arglist_t axim_gpb_args[] = {
+ ARG_TERMINATOR
+};
+
+static float
+le_read32_float(const void* src)
+{
+ float f;
+ int32_t i;
+
+ i = le_read32(src);
+ memcpy(&f, &i, 4);
+
+ return f;
+}
+
+static void
+decode_buff(const char* buff, route_head* track)
+{
+ struct tm tm;
+ double lat, lon, alt, dir;
+ float vdop, hdop, pdop, spd, Uf1;
+ int sats;
+ waypoint* wpt;
+
+ wpt = waypt_new();
+
+ memset(&tm, '\0', sizeof(tm));
+
+ tm.tm_year = le_read16((void*)(buff + 16));
+ tm.tm_mon = le_read16((void*)(buff + 18));
+ tm.tm_mday = le_read16((void*)(buff + 22));
+ tm.tm_hour = le_read16((void*)(buff + 24));
+ tm.tm_min = le_read16((void*)(buff + 26));
+ tm.tm_sec = le_read16((void*)(buff + 28));
+ lat = le_read_double((void*)(buff + 32));
+ lon = le_read_double((void*)(buff + 40));
+ spd = le_read32_float((void*)(buff + 48));
+ dir = le_read32_float((void*)(buff + 52));
+
+ alt = le_read32_float((void*)(buff + 64));
+ Uf1 = le_read32_float((void*)(buff + 68));
+
+ hdop = le_read32_float((void*)(buff + 84));
+ vdop = le_read32_float((void*)(buff + 88));
+ pdop = le_read32_float((void*)(buff + 92));
+ sats = le_read16((void*)(buff + 96));
+
+ wpt->latitude = lat;
+ wpt->longitude = lon;
+ wpt->altitude = alt;
+#if 0
+ /* These values can be, but must not be right. */
+ /* Further checks are needed to verify that. */
+ /* (!!! reference data !!!) */
+ WAYPT_SET(wpt, course, dir);
+ wpt->hdop = hdop;
+ wpt->vdop = vdop;
+ wpt->pdop = pdop;
+ wpt->sat = sats;
+ WAYPT_SET(wpt, speed, spd * 10);
+#endif
+ /* We don't have a header with some magic fixed numbers or strings. */
+ /* So let us check the range for some basic values */
+
+ is_fatal(
+ (tm.tm_year < 2005) ||
+ (tm.tm_mon < 1) || (tm.tm_mon > 12) ||
+ (tm.tm_mday < 1) || (tm.tm_mday > 31) ||
+ (tm.tm_hour > 23) || (tm.tm_min > 60) || (tm.tm_sec > 60),
+ MYNAME ": Invalid or unsupported file (invalid time-stamp).");
+ is_fatal(
+ (fabs(wpt->latitude) > 90) ||
+ (fabs(wpt->longitude) > 180),
+ MYNAME ": Invalid or unsupported file (lat or/and lon out of range).");
+
+ /* post work */
+
+ tm.tm_year-=1900;
+ tm.tm_mon--;
+ wpt->SetCreationTime(mkgmtime(&tm));
+
+ track_add_wpt(track, wpt);
+}
+
+/*******************************************************************************
+* %%% global callbacks called by gpsbabel main process %%% *
+*******************************************************************************/
+
+static void
+axim_gpb_rd_init(const char* fname)
+{
+ fin = gbfopen(fname, "rb", MYNAME);
+}
+
+static void
+axim_gpb_rd_deinit(void)
+{
+ gbfclose(fin);
+}
+
+static void
+axim_gpb_read(void)
+{
+ char buff[RECORD_LEN];
+ route_head* track = NULL;
+ size_t bytes;
+
+ while ((bytes = gbfread(buff, 1, RECORD_LEN, fin))) {
+ is_fatal((bytes != RECORD_LEN), MYNAME ": Invalid or unsupported file (filesize).");
+ if (track == NULL) {
+ track = route_head_alloc();
+ track_add_head(track);
+ }
+ decode_buff(buff, track);
+ }
+}
+
+/**************************************************************************/
+
+ff_vecs_t axim_gpb_vecs = {
+ ff_type_file,
+ {
+ ff_cap_none /* waypoints */,
+ ff_cap_read /* tracks */,
+ ff_cap_none /* routes */,
+ },
+ axim_gpb_rd_init,
+ NULL,
+ axim_gpb_rd_deinit,
+ NULL,
+ axim_gpb_read,
+ NULL,
+ NULL,
+ axim_gpb_args,
+ CET_CHARSET_ASCII, 0
+};
+/**************************************************************************/
ff_vecs_t format_skeleton_vecs = {
ff_type_file,
{
- ff_cap_read | ff_cap_write /* waypoints */,
+ (ff_cap)(ff_cap_read | ff_cap_write) /* waypoints */,
ff_cap_none /* tracks */,
ff_cap_none /* routes */
},
+++ /dev/null
-#
-# Dell Axim Navigation System 'axim_gpb' test
-#
-rm -f ${TMPDIR}/axim-*
-gpsbabel -i axim_gpb -f ${REFERENCE}/track/axim-sample.gpb -o gpx -F ${TMPDIR}/axim-sample.gpx
-compare ${REFERENCE}/track/axim-sample.gpx ${TMPDIR}/axim-sample.gpx
-
--- /dev/null
+#
+# Dell Axim Navigation System 'axim_gpb' test
+#
+rm -f ${TMPDIR}/axim-*
+gpsbabel -i axim_gpb -f ${REFERENCE}/track/axim-sample.gpb -o gpx -F ${TMPDIR}/axim-sample.gpx
+compare ${REFERENCE}/track/axim-sample.gpx ${TMPDIR}/axim-sample.gpx
+
} vecs_t;
extern ff_vecs_t an1_vecs;
-extern ff_vecs_t axim_gpb_vecs;
extern ff_vecs_t bcr_vecs;
extern ff_vecs_t brauniger_iq_vecs;
extern ff_vecs_t cetus_vecs;
"txt"
},
#endif // CSVFMTS_ENABLED
- {
- &axim_gpb_vecs,
- "axim_gpb",
- "Dell Axim Navigation System (.gpb) file format",
- "gpb"
- },
{
>c_vecs,
"gtrnctr",